package pe.com.hermes.hermetic.web.controller.configuracion;

import pe.com.hermes.hermetic.beans.AuditBean;
import pe.com.hermes.hermetic.beans.ClienteBean;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;
import pe.com.hermes.hermetic.negocio.ultil.Util;
import pe.com.hermes.hermetic.web.controller.base.IController;
import pe.com.hermes.hermetic.web.forms.HMF1003Form;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

import pe.com.hermes.unidadesnegocio.comercial.entities.ClienteEntity;
import pe.com.hermes.unidadesnegocio.operaciones.entities.SucursalEntity;


@RequestMapping("/mostrarHWF1003.html")
@Controller
@SessionAttributes("form")
public class CambiodeClienteController implements IController{

        private Logger logger = Logger.getLogger(this.getClass());
        @Autowired
	HermeticFacade servicioHermetic;
        
        @RequestMapping(method={RequestMethod.GET})
        protected String showForm(ModelMap model, HttpServletRequest request) throws Exception {

            HttpSession session = request.getSession(false);        
            if (request.getSession().getAttribute("usuario") == null)
                return FORM_SESSION_FINISH;
            List listaTransacciones = (List)session.getAttribute("listaMenu4");
            if (!Util.validaAccesoOpcion(listaTransacciones, ConstantesHermetic.CONFIG_CAMBIO_CLIENTE)) {
                return FORM_ACCESS_NULL_VIEW;
            }
            String sucursal = (String)request.getSession().getAttribute("sucursal");
            HMF1003Form form = new HMF1003Form();
            form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
            try {
                List listadoClientes = servicioHermetic.getListadoCambioClientes(sucursal);
                if (listadoClientes != null) {
                    model.put("listadoClientes", listadoClientes);
                }
                AuditBean auditBean = new AuditBean(CAMB_CLIENT);
                servicioHermetic.inseAudit(auditBean);
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("Error en el proceso. "+ e);
                return FORM_ERROR_VIEW;
            }
            model.put(FORM_KEY,form);  
            return FORM_CONF_CAMBIO_CLIE_VIEW;
        }

        @RequestMapping(params={"accion=cambiar"})
        private String cambiar (ModelMap model,@ModelAttribute(FORM_KEY) HMF1003Form form, HttpServletRequest request) throws Exception {    
        
            HttpSession session = request.getSession(false);        
            if (request.getSession().getAttribute("usuario") == null)
                return FORM_SESSION_FINISH;

            List listaTransacciones = (List)session.getAttribute("listaMenu4");
            if (!Util.validaAccesoOpcion(listaTransacciones, ConstantesHermetic.CONFIG_CAMBIO_CLIENTE)) {
                return FORM_ACCESS_NULL_VIEW;
            }    
            form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
            
            //int accionMapa = 1;
            String sucursal = (String)request.getSession().getAttribute("sucursal");
            String codCliente = request.getParameter("chk");
            ClienteBean cliente = new ClienteBean();
            cliente = servicioHermetic.getCliente(codCliente);

            session.setAttribute("cliente", codCliente);
            session.setAttribute("nombreCliente", cliente.getNombre());
            session.setAttribute("clie", new ClienteEntity(Integer.valueOf(codCliente),cliente.getNombre()));
            try {

                //lISTADO de CLIENTES 
                List listadoClientes = 
                    servicioHermetic.getListadoCambioClientes(sucursal);
                if (listadoClientes != null) {
                    session.setAttribute("listadoClientes", listadoClientes);
                    model.put("listadoClientes", listadoClientes);
                }
                
                //lISTADO de CUENTAS 
                List listadoCuentas = servicioHermetic.getCuentas(sucursal, codCliente);        
                if (listadoCuentas != null) {
                    session.setAttribute("listadoCuentas", listadoCuentas);
                }
                model.put(FORM_KEY,form);  
            } catch (Exception e) {
                e.printStackTrace();
                //accionMapa = 0;
                return FORM_ERROR_VIEW;
            }

            return FORM_CONF_CAMBIO_CLIE_VIEW;
        }


}
